package honest.playmusic.util;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 中英文一起的字符串所占空间
 * @author honest
 *
 */

public class FormatString {



	/**
	 * 格式化字符串
	 * @param str 要格式化的字符串
	 * @param len 格式化输出的长度
	 * @param loc 空字符位置 loc为true时空格加到前面，loc为false时空格加到后面
	 * @return 格式化的字符串
	 */
	public static  String getFormatString(String str,int len,boolean loc){
		int num=spaceNum(str);
		String tmp="";
		for(int i=0;i<len-num;i++){
			tmp+=" ";
		}
		if(loc)
			return tmp+str;
		else
			return str+tmp;
	}

	/**
	 * 格式化字符串2
	 * @param str 要格式化的字符串
	 * @param len 格式化输出的长度
	 * @param loc 空字符位置 loc为true时空格加到前面，loc为false时空格加到后面
	 * @return 格式化的字符串
	 */
	public static  String getFormatString2(String str,int len,boolean loc){
		int num=spaceNum(str);
		String tmp="";
		int size=(len-num)/2;
		for(int i=0;i<size;i++){
			tmp+=" ";
		}
		if(loc)
			return tmp+str;
		else
			return str+tmp;
	}



	/**
	 * 所占空间大小
	 * @param str
	 * @return
	 */

	public static int spaceNum(String str){
		return 2*chineseNum(str)+noChineseNum(str);
	}

	/**
	 * 中文字符数目
	 * @param str 要检查的字符串
	 * @return 中文字符数目
	 */
	public static int chineseNum(String str){
		int count=0;
		String regEx = "[\\u4e00-\\u9fa5]";
		Pattern p = Pattern.compile(regEx);
		Matcher m = p.matcher(str);
		while(m.find())
			count=count+1;

		String regEx1 = "，";
		Pattern p1 = Pattern.compile(regEx1);
		Matcher m1 = p1.matcher(str);
		while(m1.find())
			count=count+1;
		return count;
	}


	/**
	 * 非中文字符数目
	 * @param str 要检查的字符串
	 * @return 非中文字符数目
	 */
	public static int noChineseNum(String str){
		int count=0;
		String regEx = "[^\\u4e00-\\u9fa5]";
		Pattern p = Pattern.compile(regEx);
		Matcher m = p.matcher(str);
		while(m.find())
			count=count+1;

		String regEx1 = "[，（）]";
		Pattern p1 = Pattern.compile(regEx1);
		Matcher m1 = p1.matcher(str);
		while(m1.find())
			count=count-1;
		return count;
	}
	
	
	public static List<String> lrcStringSplit(String str){
		List<String> list=new ArrayList<String>();
		int index=1;
		while(index<str.length()-1){
		  for(index=1;index<str.length();index++){
			  if(str.charAt(index)=='['&&str.charAt(index-1)!=']'){
				  list.add(str.substring(0,index));
				  str=str.substring(index);
				  break;
			  } 
		  }
		}
		list.add(str);
		return list;
	}
	
}
